Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / NPC / Ranged Slime / RangedSlimeLife.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RangedSlimeLife : MonoBehaviour
{
    private PlayerLevel playerLevel;
    private PlayerGold playerGold;
    private GameObject player;
    public GameObject RangedSlimeLifeBar;
    public GameObject RangedSlimeLifeText;
    public int life = 50;
    public int rangeSlimeMaxLife = 50;
    public bool dead;

    public bool flashActive;
    [SerializeField]
    public float flashLength = 0f;
    [SerializeField]
    public float flashCounter = 0f;
    private SpriteRenderer rangedSlimeSprite;

    public void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player");
        playerLevel = FindObjectOfType<PlayerLevel>(); // to access the Player Level file
        playerGold = FindObjectOfType<PlayerGold>(); // to access the Player Gold
        rangedSlimeSprite = GetComponent<SpriteRenderer>();
        dead = false;
    }

    public void Update()
    {
        Vector3 rangedSlime = new Vector3(transform.position.x, transform.position.y, transform.position.z); // to calculate the distance
        Vector3 Ppos = new Vector3(player.transform.position.x, player.transform.position.y, transform.position.z); // to calculate the distance
        if (life < 0) // to make sure that the enemy doesn't have the life under 0
        {
            life = 0;
        }
        if (life == 0) // to destroy the enemy if life is 0
        {
            Destroy(gameObject);
            dead = true;
            Destroy(RangedSlimeLifeBar);
            Destroy(RangedSlimeLifeText);
            if (dead == true)
            {
                playerLevel.exp += 110;
                dead = false;
                playerGold.gold += 100;
                Debug.Log(dead);
            }
        }
        if (life > rangeSlimeMaxLife) // to make sure that the enemy doesn't have more life than the max life
        {
            life = rangeSlimeMaxLife;
        }
        if (Vector3.Distance(rangedSlime, Ppos) > 14.2f) // enemy regenrate life once the player is away
        {
            life = rangeSlimeMaxLife;
        }

        if (flashActive)
        {
            if (flashCounter > flashLength * .99f)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .82f)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f);
            }
            else if (flashCounter > flashLength * .66f)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .49)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f);
            }
            else if (flashCounter > flashLength * .33)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .16f)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f);
            }
            else if (flashCounter > 0f)
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f);
            }
            else
            {
                rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f);
                flashActive = false;
            }
            flashCounter -= Time.deltaTime;
        }
    }
}